package com.tz.crm.service;


import com.tz.crm.entity.Role;
import com.tz.crm.entity.User;
import com.tz.crm.utils.Pager;

import java.util.List;

/**
 * UserService
 * 员工的增改查
 */
public interface UserService extends BaseService<User, String> {

    /**
     * 查询所有员工详细信息
     *
     * @param pager Pager
     * @param user  User
     * @return Pager
     */
    Pager<User> getByPager(Pager pager, User user);

    /**
     * 根据部门查找其下所有员工
     *
     * @param pager        pager
     * @param departmentId department Id
     * @return Pager对象
     */
    Pager<User> getUsersByPager(Pager pager, String departmentId);

    /**
     * 根据员工姓名查找员工详细信息
     *
     * @param realName realName
     * @return User列表
     */
    List<User> getByName(String realName);

    /**
     * 查询所有员工详细信息
     *
     * @param pager Pager
     * @return user list
     */
    List<User> getAll(Pager pager);

    /**
     * 根据 username ,password查找用户
     *
     * @param username username
     * @param password password
     * @return User
     */
    User getByLogin(String username, String password);

    /**
     * 根据部门名称查找部门员工
     *
     * @param name  name
     * @param pager pager
     * @return User列表
     */
    List<User> getByDepartmentName(String name, Pager pager);

    /**
     * 根据用户信息,以及角色id字符串,保存用户
     *
     * @param user    User
     * @param roleIds roleIds
     */
    void saveWithRole(User user, String roleIds);

    /**
     * 根据用户ID查询用户角色
     *
     * @param id 用户ID
     * @return Role列表
     */
    List<Role> getRoleListByUserId(String id);

    /**
     * 根据角色id，更新用户
     *
     * @param user    User
     * @param roleIds roleIds
     */
    void updateWithRole(User user, String roleIds);

    /**
     * 更新用户
     *
     * @param user User
     */
    void updatePersonalInfo(User user);


}
